const stack = [];
stack.push('1')
stack.push('2')
const item1 = stack.pop(); // 出栈
const item2 = stack.pop();
// 后进先出

// 二进制  后进先出

// 有效的括号  有效的闭合   算法
var isVaild = function(s) {
  // 如果是奇数既没有必要再走了
  if(s.length % 2 === 1) return false
  const stack = []
  for(let i = 0; i<s.length; i+=1) {
    const c = s[i]
    if(c==='(' || c==='{' || c==='[') {
      stack.push(c)
    }else{
      const t = stack[stack.length - 1]
      if(
        (t==='(' && c===')') || 
        (t==='{' && c==='}') || 
        (t==='[' && c===']')
      ){
        stack.pop()
      }else{
        return false
      }
    }
  }
  return stack.length === 0
}


// 二叉树前序遍历

var pre = function(root) {
  const res = []
  const stack = []
  if(root) stack.push(root.val)
  while(stack.length) {
    var node = stack.pop()
    res.push(node.val)
    if(node.right) stack.push(node.right)
    if(node.left) stack.push(node.left)
  }
  return res
}

// 函数调用堆栈